/*
本程序也是采用的树结构，如果是M合并命令，那么两个树合并到一起，如果是Q命令，那么查找两个树的祖先是否一致
*/
#include <stdio.h>
#include <stdlib.h>
#include "battle.h"

int main()
{
	int n,m,i,x,y;	
	char C;
	scanf("%d %d",&n,&m);//输入节点数n和命令数m
	Node *Fore=malloc(n*sizeof(Node));//创建各节点
	char *print=malloc(m);
	for(i=0;i<n;i++)
	{
		Fore[i].p=NULL;
		Fore[i].l=NULL;
		Fore[i].r=NULL;
		Fore[i].key=i;
	}//各节点初始化
	for(i=0;i<m;i++)
	{
		getchar();//用于接受缓冲区残留的换行符
		scanf("%c %d %d",&C,&x,&y);
		if(C=='M') 
		{
			Insert(&Fore[x],&Fore[y]);//如果是M命令，插入节点
			print[i]=' ';
		}
		else 
		{
			if(Find(&Fore[x],&Fore[y]))
				print[i]='Y';
			else 
				print[i]='N';
		}
	}
	for(i=0;i<m;i++)
	{
		if(print[i]!=' ')
			printf("%c\n",print[i]);
	}
	return 0;	
}
